package com.travelgroup.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.travelgroup.domain.dto.JoinDTO;
import com.travelgroup.domain.dto.TourGroupDTO;
import com.travelgroup.domain.dto.UserGroupDTO;
import com.travelgroup.domain.entity.TourGroup;
import com.travelgroup.domain.vo.TourGroupVO;
import com.travelgroup.domain.vo.UserGroupVO;
import com.travelgroup.domain.vo.UserVO;
import com.travelgroup.exception.R;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;
import java.util.Map;

public interface ITourGroupService extends IService<TourGroup> {
    TourGroup getByRedis(Long id);

    R<Long> submitTourGroup(TourGroupDTO tourGroup);

    R<TourGroupVO> queryTourGroupById(Long id);

    R<Long> cancelTourGroup(Long id);

    R<?> deleteTourGroup(Long id);

    R<TourGroupDTO> updateTourGroupById(Long id, TourGroupDTO tourGroup);

    R<?> cancelUserGroup(Long groupId);

    R<Long> saveUserGroup(UserGroupDTO userGroupDTO);

    R<List<UserGroupVO>> queryMyTourGroup(Integer current, Integer size);

    R<List<UserVO>> queryUserByGroupId(Long groupId);

    R<Map<String, Object>> payAndJoin(JoinDTO joinDTO);

    R<?> paymentCallback(HttpServletRequest params);
}
